//
//  WelcomeViewController.swift
//  xinlangweibo
//
//  Created by yangshuo on 15/12/2.
//  Copyright © 2015年 yangshuo. All rights reserved.
//

import UIKit
import SDWebImage
//为什么这里不需要importSnapKit也可以实现,答:其它的地方导入一遍这里无需再次导入
//import SnapKit
class WelcomeViewController: UIViewController {
    //设置界面->视图的层次结构
    override func loadView() {
        //直接使用背景图作为根视图,不用关心图像的缩放问题(代码实现,用storyboard不行)
        view = backImageView
        setupUI()

    }
//视图加载完成之后的后续处理->通常用来设置数据
    override func viewDidLoad() {
        super.viewDidLoad()
        iconView.sd_setImageWithURL(UserAccountViewModel.sharedUserAccount.avatarUrl, placeholderImage: UIImage(named: "avatar_default_big"))
}
    //视图已经显示->通常用来动画/键盘处理
   //view显示后调用方法
    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        //1.更改约束->改变位置
        //snp_updateConstraints更新已设置好的约束
        //mulitiplier属性只是只读属性,创建之后不允许修改
        
        //使用自动布局开发有一个原则
        //所有'使用约束'设置的控件,不要在设置frame
        
        //原因:自动布局系统会根据设置的约束,自动计算控件的frame
        //自动布局系统在layoutsubviews函数中设置frame
        //如果程序员主动修改frame,会引起自动布局系统计算错误
        
        //工作原理:当一个运行循环启动,自动布局系统,会收集所有的约束变化
        //在运行循环结束前,调用layoutsubviews函数'统一'设置frame
        //如果希望某些约束提前更新,使用'layoutifneed'函数让自动布局系统,提前更新当前收集到的约束变化
    iconView.snp_updateConstraints { (make) -> Void in
        make.bottom.equalTo(view.snp_bottom).offset(-view.bounds.height + 200)}
        messageLabel.alpha = 0
        UIView.animateWithDuration(1.5, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 10, options: [], animations: { () -> Void in
            //修改'可动画属性'(如:frame,大小)
            // 自动布局的动画调用方法,(不需要再去修改与控件相关的frame)
            //修改'可动画属性'-自动布局动画
            self.view.layoutIfNeeded()
            }, completion: { (__) -> Void in
               UIView.animateWithDuration(1, animations: { () -> Void in
                self.messageLabel.alpha = 1.0
                }, completion: { (_) -> Void in
                    print("所有'使用约束'设置的控件,不要再设置frame!")
                    //发布通知
                    NSNotificationCenter.defaultCenter().postNotificationName(WBSwithchRootControllerNotification,//通知名称
                        object: nil)//这个object是传递给通知中心的一个参数,跟前面的监听对象object是不一样的!
               })
 
        })

        
    }
    //懒加载背景图片
    private lazy var backImageView: UIImageView = UIImageView(imageName: "ad_background")
    //懒加载头像
    private lazy var iconView :UIImageView = {
        let iv = UIImageView(imageName: "avatar_default_big")
        //设置圆角,(边长的点/2的值,就是圆的顶点位置)
        iv.layer.cornerRadius = 45
        iv.layer.masksToBounds = true
        return iv
    }()
    //注意:便利构造所自定义的默认属性可任意删改
    private lazy var messageLabel: UILabel = UILabel(title: "欢迎回来", color: UIColor.orangeColor(), fontSize: 18)

}
    //MARK: - 设置界面
    extension WelcomeViewController{
        private func setupUI(){
            //添加子控件
            view.addSubview(iconView)
            view.addSubview(messageLabel)
            iconView.snp_makeConstraints { (make) -> Void in
                make.centerX.equalTo(view.snp_centerX)
                make.bottom.equalTo(view.snp_bottom).offset(-200)
                //保证头像为正圆(因为avatar_default_big的像素是170X170也就是85,所以为了保证正圆,将宽高设置为90)
                make.width.equalTo(90)
                make.height.equalTo(90)
            }
            messageLabel.snp_makeConstraints { (make) -> Void in
                make.centerX.equalTo(iconView.snp_centerX)
                make.top.equalTo(iconView.snp_bottom).offset(16)
            }
        }
    }
